home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 2 / Apprentice-Release2.iso / Tools / Languages / Icon 8.1 / mep2 / MemMon 2.0 / Samples / pool.icn < prev    next >
Encoding:
Text File  |  1990-11-25  |  512 b   |  29 lines  |  [TEXT/PICN]

  1. # Assign Program Input to pool.dat before running.
  2. #
  3. procedure main()
  4.    pool := set([read()]) | stop("no seed")
  5.    every 1 to 4000 do {
  6.       write(x := Extract(pool))
  7.       every insert(pool,scramble(x))
  8.       }
  9. end
  10.  
  11. procedure Extract(s)
  12.    local x
  13.    delete(s,x := ?s) | fail
  14.    return x
  15. end
  16.  
  17. procedure scramble(s)
  18.    suspend reverse(s[1:-1]) | select(s)
  19. end
  20.  
  21. procedure select(s)
  22.    local t
  23.    t := ""
  24.    if *s > 1 then every 1 to ?*s do
  25.       t ||:= ?s
  26.    else t := repl(s,?10)
  27.    suspend t | reverse(t)
  28. end
  29.